import ACCESS_ENUM from '@/access/accessEnum'

/**
 * 检查用户是否具有指定权限
 * @param loginUser 登录用户信息
 * @param needAccess 需要的权限级别，默认为不需要登录
 * @returns 是否有权限
 */
const checkAccess = (
  loginUser: API.LoginUserVO | null | undefined,
  needAccess = ACCESS_ENUM.NOT_LOGIN,
) => {
  // 获取当前登录用户的权限，如果没有则默认为未登录
  // 将 API 类型映射到我们的权限枚举
  let loginUserAccess = ACCESS_ENUM.NOT_LOGIN
  if (loginUser?.userRole === 'user') {
    loginUserAccess = ACCESS_ENUM.USER
  } else if (loginUser?.userRole === 'admin') {
    loginUserAccess = ACCESS_ENUM.ADMIN
  }

  // 如果不需要权限，直接通过
  if (needAccess === ACCESS_ENUM.NOT_LOGIN) {
    return true
  }

  // 如果需要用户权限
  if (needAccess === ACCESS_ENUM.USER) {
    // 如果用户未登录，则无权限
    if (loginUserAccess === ACCESS_ENUM.NOT_LOGIN) {
      return false
    }
  }

  // 如果需要管理员权限
  if (needAccess === ACCESS_ENUM.ADMIN) {
    // 只有管理员才能访问
    if (loginUserAccess !== ACCESS_ENUM.ADMIN) {
      return false
    }
  }

  return true
}

export default checkAccess
